package com.xqq.entity;

import com.alibaba.excel.annotation.ExcelProperty;
import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableName;
import lombok.Getter;
import lombok.Setter;

import java.time.LocalDate;

/**
 * <p>
 * 
 * </p>
 *
 * @author xqq
 * @since 2024-10-29
 */
@Getter
@Setter
@TableName("conflict_event")
public class ConflictEventDO {

    @ExcelProperty("event_id_cnty")
    @TableField("event_id_cnty")
    private String eventIdCnty;

    @ExcelProperty("event_date")
    @TableField("event_date")
    private LocalDate eventDate;

    @ExcelProperty("year")
    @TableField("year")
    private Integer year;

    @ExcelProperty("time_precision")
    @TableField("time_precision")
    private Integer timePrecision;

    @ExcelProperty("disorder_type")
    @TableField("disorder_type")
    private String disorderType;

    @ExcelProperty("event_type")
    @TableField("event_type")
    private String eventType;

    @TableField("event_type_zh")
    private String eventTypeZh;

    @TableField("sub_event_type")
    private String subEventType;

    @TableField("actor1")
    private String actor1;

    @TableField("assoc_actor_1")
    private String assocActor1;

    @TableField("inter1")
    private Integer inter1;

    @TableField("actor2")
    private String actor2;

    @TableField("assoc_actor_2")
    private String assocActor2;

    @TableField("inter2")
    private Integer inter2;

    @TableField("interaction")
    private Integer interaction;

    @TableField("civilian_targeting")
    private String civilianTargeting;

    @TableField("iso")
    private Integer iso;

    @TableField("region")
    private String region;

    @TableField("country")
    private String country;

    @TableField("admin1")
    private String admin1;

    @TableField("admin2")
    private String admin2;

    @TableField("admin3")
    private String admin3;

    @TableField("location")
    private String location;

    @TableField("latitude")
    private Double latitude;

    @TableField("longitude")
    private Double longitude;

    @TableField("geo_precision")
    private Integer geoPrecision;

    @TableField("source")
    private String source;

    @TableField("source_scale")
    private String sourceScale;

    @TableField("notes")
    private String notes;

    @TableField("fatalities")
    private Integer fatalities;

    @TableField("tags")
    private String tags;

    @TableField("timestamp")
    private Long timestamp;

    public ConflictEventDO() {
        // Default constructor
    }
    // Builder class
    public static class Builder {
        private String eventIdCnty;
        private LocalDate eventDate;
        private Integer year;
        private Integer timePrecision;
        private String disorderType;
        private String eventType;
        private String eventTypeZh;
        private String subEventType;
        private String actor1;
        private String assocActor1;
        private Integer inter1;
        private String actor2;
        private String assocActor2;
        private Integer inter2;
        private Integer interaction;
        private String civilianTargeting;
        private Integer iso;
        private String region;
        private String country;
        private String admin1;
        private String admin2;
        private String admin3;
        private String location;
        private Double latitude;
        private Double longitude;
        private Integer geoPrecision;
        private String source;
        private String sourceScale;
        private String notes;
        private Integer fatalities;
        private String tags;
        private Long timestamp;


        public Builder eventIdCnty(String eventIdCnty) {
            this.eventIdCnty = eventIdCnty;
            return this;
        }

        public Builder eventDate(LocalDate eventDate) {
            this.eventDate = eventDate;
            return this;
        }

        public Builder year(Integer year) {
            this.year = year;
            return this;
        }

        public Builder timePrecision(Integer timePrecision) {
            this.timePrecision = timePrecision;
            return this;
        }

        public Builder disorderType(String disorderType) {
            this.disorderType = disorderType;
            return this;
        }

        public Builder eventType(String eventType) {
            this.eventType = eventType;
            return this;
        }

        public Builder eventTypeZh(String eventTypeZh) {
            this.eventTypeZh = eventTypeZh;
            return this;
        }
        public Builder subEventType(String subEventType) {
            this.subEventType = subEventType;
            return this;
        }

        public Builder actor1(String actor1) {
            this.actor1 = actor1;
            return this;
        }

        public Builder assocActor1(String assocActor1) {
            this.assocActor1 = assocActor1;
            return this;
        }

        public Builder inter1(Integer inter1) {
            this.inter1 = inter1;
            return this;
        }

        public Builder actor2(String actor2) {
            this.actor2 = actor2;
            return this;
        }

        public Builder assocActor2(String assocActor2) {
            this.assocActor2 = assocActor2;
            return this;
        }

        public Builder inter2(Integer inter2) {
            this.inter2 = inter2;
            return this;
        }

        public Builder interaction(Integer interaction) {
            this.interaction = interaction;
            return this;
        }

        public Builder civilianTargeting(String civilianTargeting) {
            this.civilianTargeting = civilianTargeting;
            return this;
        }

        public Builder iso(Integer iso) {
            this.iso = iso;
            return this;
        }

        public Builder region(String region) {
            this.region = region;
            return this;
        }

        public Builder country(String country) {
            this.country = country;
            return this;
        }

        public Builder admin1(String admin1) {
            this.admin1 = admin1;
            return this;
        }

        public Builder admin2(String admin2) {
            this.admin2 = admin2;
            return this;
        }

        public Builder admin3(String admin3) {
            this.admin3 = admin3;
            return this;
        }

        public Builder location(String location) {
            this.location = location;
            return this;
        }

        public Builder latitude(Double latitude) {
            this.latitude = latitude;
            return this;
        }

        public Builder longitude(Double longitude) {
            this.longitude = longitude;
            return this;
        }

        public Builder geoPrecision(Integer geoPrecision) {
            this.geoPrecision = geoPrecision;
            return this;
        }

        public Builder source(String source) {
            this.source = source;
            return this;
        }

        public Builder sourceScale(String sourceScale) {
            this.sourceScale = sourceScale;
            return this;
        }

        public Builder notes(String notes) {
            this.notes = notes;
            return this;
        }

        public Builder fatalities(Integer fatalities) {
            this.fatalities = fatalities;
            return this;
        }

        public Builder tags(String tags) {
            this.tags = tags;
            return this;
        }

        public Builder timestamp(Long timestamp) {
            this.timestamp = timestamp;
            return this;
        }

        public ConflictEventDO build() {
            ConflictEventDO conflictEventDO = new ConflictEventDO();
            conflictEventDO.eventIdCnty = this.eventIdCnty;
            conflictEventDO.eventDate = this.eventDate;
            conflictEventDO.year = this.year;
            conflictEventDO.timePrecision = this.timePrecision;
            conflictEventDO.disorderType = this.disorderType;
            conflictEventDO.eventType = this.eventType;
            conflictEventDO.eventTypeZh = this.eventTypeZh;
            conflictEventDO.subEventType = this.subEventType;
            conflictEventDO.actor1 = this.actor1;
            conflictEventDO.assocActor1 = this.assocActor1;
            conflictEventDO.inter1 = this.inter1;
            conflictEventDO.actor2 = this.actor2;
            conflictEventDO.assocActor2 = this.assocActor2;
            conflictEventDO.inter2 = this.inter2;
            conflictEventDO.interaction = this.interaction;
            conflictEventDO.civilianTargeting = this.civilianTargeting;
            conflictEventDO.iso = this.iso;
            conflictEventDO.region = this.region;
            conflictEventDO.country = this.country;
            conflictEventDO.admin1 = this.admin1;
            conflictEventDO.admin2 = this.admin2;
            conflictEventDO.admin3 = this.admin3;
            conflictEventDO.location = this.location;
            conflictEventDO.latitude = this.latitude;
            conflictEventDO.longitude = this.longitude;
            conflictEventDO.geoPrecision = this.geoPrecision;
            conflictEventDO.source = this.source;
            conflictEventDO.sourceScale = this.sourceScale;
            conflictEventDO.notes = this.notes;
            conflictEventDO.fatalities = this.fatalities;
            conflictEventDO.tags = this.tags;
            conflictEventDO.timestamp = this.timestamp;
            return conflictEventDO;
        }
    }
}
